home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 24 / AACD 24.iso / AACD / Programming / exif.lib / dev / includes / exif / exif.h < prev   
Encoding:
C/C++ Source or Header  |  2001-01-03  |  7.3 KB  |  252 lines

  1. #ifndef EXIF_H
  2. #define EXIF_H
  3.  
  4. /*
  5. **    $VER: exif.h 1.0 (3.1.2001)
  6. **
  7. **    Public structures and defintions for exif.library.
  8. **
  9. **    © Paul Huxham
  10. */
  11.  
  12. #ifndef EXEC_TYPES_H
  13. #include "exec/types.h"
  14. #endif
  15.  
  16. #ifndef EXEC_LISTS_H
  17. #include "exec/lists.h"
  18. #endif
  19.  
  20. #ifndef DOS_DOS_H
  21. #include <dos/dos.h>
  22. #endif
  23.  
  24. #ifndef UTILITY_TAGITEM_H
  25. #include <utility/tagitem.h>
  26. #endif
  27.  
  28. /*========================================================================*/
  29.  
  30. struct Exif
  31. {
  32.     struct MinList ExifTagList; // Contains entries of type ExifTagDir
  33.  
  34.     ULONG ExifLength; // Total size in bytes of exif header
  35.     ULONG ThumbnailSize; // Size in bytes of thumbnail data
  36.     UBYTE *ThumbnailData; // If not NULL points to the thumbnail data
  37.  
  38.     /* Private fields follow */
  39. };
  40.  
  41. struct ExifTagDir
  42. {
  43.     struct MinNode etd_MinNode;
  44.  
  45.     struct MinList etd_Dir; // Contains entries of type ExifTag
  46.  
  47.     ULONG etd_DirID; // Defined below
  48.  
  49.     char *etd_ID; // Points to a localized description of the directory name
  50. };
  51.  
  52. struct ExifTag
  53. {
  54.     struct MinNode et_MinNode;
  55.  
  56.     ULONG et_Tag; // Exif Tag
  57.  
  58.     char *et_TagDescription; // Points to a localized text description of the tag
  59.  
  60.     void *et_StringEquiv; // Points to a string version of the tag data
  61.  
  62.     UWORD et_Format; // Data format (defined below)
  63.     UWORD et_reserved1;
  64.     ULONG et_Count; // Byte count of original tag data
  65.     UBYTE *et_OriginalData; // Original tag data
  66.  
  67.     /* Private fields */
  68.     char data[1];
  69. };
  70.  
  71. /* Data formats for et_OriginalData */
  72. #define FMT_BYTE 1 
  73. #define FMT_STRING 2
  74. #define FMT_USHORT 3
  75. #define FMT_ULONG 4
  76. #define FMT_URATIONAL 5
  77. #define FMT_SBYTE 6
  78. #define FMT_UNDEFINED 7
  79. #define FMT_SSHORT 8
  80. #define FMT_SLONG 9
  81. #define FMT_SRATIONAL 10
  82. #define FMT_SINGLE 11
  83. #define FMT_DOUBLE 12
  84. #define FMT_CUSTOM 13
  85.  
  86. /*========================================================================*/
  87. /* Exif tagbase */
  88. #define EXF_TB ( TAG_USER + 0x80000 )
  89.  
  90. /* Exif tags requiring V1.0 */
  91.  
  92. /* None defined */
  93.  
  94. /*========================================================================*/
  95. /* Regular Exif 2.1 tags */
  96. #define EXIF_UNKNOWN 0x0000
  97.  
  98. #define EXIF_NEW_SUBFILE_TYPE 0x00fe
  99. #define EXIF_SUBFILE_TYPE 0x00ff
  100. #define EXIF_IMAGE_WIDTH 0x0100
  101. #define EXIF_IMAGE_LENGTH 0x0101
  102. #define EXIF_BITS_PER_SAMPLE 0x0102
  103. #define EXIF_COMPRESSION 0x0103
  104. #define EXIF_PHOTOMETRIC_INTERPRET 0x0106
  105. #define EXIF_FILL_ORDER 0x010a
  106. #define EXIF_DOCUMENT_NAME 0x010d
  107. #define EXIF_DESCRIPTION 0x010e
  108. #define EXIF_MAKE 0x010f
  109. #define EXIF_MODEL 0x0110
  110. #define EXIF_STRIP_OFFSETS 0x0111
  111. #define EXIF_ORIENTATION 0x0112
  112. #define EXIF_SAMPLES_PER_PIXEL 0x0115
  113. #define EXIF_ROWS_PER_STRIP 0x0116
  114. #define EXIF_STRIP_BYTE_COUNTS 0x0117
  115. #define EXIF_X_RESOLUTION 0x011a
  116. #define EXIF_Y_RESOLUTION 0x011b
  117. #define EXIF_PLANAR_CONFIGURATION 0x011c
  118. #define EXIF_RESOLUTION_UNIT 0x0128
  119. #define EXIF_TRANSFER_FUNCTION 0x012d
  120. #define EXIF_SOFTWARE 0x0131
  121. #define EXIF_DATE_TIME 0x0132
  122. #define EXIF_ARTIST 0x013b
  123. #define EXIF_PREDICTOR 0x013d
  124. #define EXIF_WHITE_POINT 0x013e
  125. #define EXIF_PRIMARY_CHROMATICITIES 0x013f
  126. #define EXIF_TILE_WIDTH 0x0142
  127. #define EXIF_TILE_LENGTH 0x0143
  128. #define EXIF_TILE_OFFSETS 0x0144
  129. #define EXIF_TILE_BYTE_COUNTS 0x0145
  130. #define EXIF_SUB_IFDS 0x014a
  131. #define EXIF_TRANSFER_RANGE 0x0156
  132. #define EXIF_JPEG_TABLES 0x015b
  133. #define EXIF_JPEG_PROC 0x0200
  134. #define EXIF_JPEG_IF_OFFSET 0x0201
  135. #define EXIF_JPEG_IF_LENGTH 0x0202
  136. #define EXIF_YCBCR_COEFFICIENTS 0x0211
  137. #define EXIF_YCBCR_SUBSAMPLING 0x0212
  138. #define EXIF_YCBCR_POSITIONING 0x0213
  139. #define EXIF_REFERENCE_BLACK_WHITE 0x0214
  140. #define EXIF_CFA_REPEAT_PATTERN_DIM 0x828d
  141. #define EXIF_BATTERY_LEVEL 0x828f
  142. #define EXIF_COPYRIGHT 0x8298
  143. #define EXIF_EXPOSURE_TIME 0x829a
  144. #define EXIF_F_NUMBER 0x829d
  145. #define EXIF_IPTC_NAA 0x83bb
  146. #define EXIF_EXIF_OFFSET 0x8769
  147. #define EXIF_INTERCOLOR_PROFILE 0x8773
  148. #define EXIF_EXPOSURE_PROGRAM 0x8822
  149. #define EXIF_SPECTRAL_SENSITIVITY 0x8824
  150. #define EXIF_GPS_INFO 0x8825
  151. #define EXIF_ISO_SPEED_RATINGS 0x8827
  152. #define EXIF_OECF 0x8828
  153. #define EXIF_INTERLACE 0x8829
  154. #define EXIF_TIME_ZONE_OFFSET 0x882a
  155. #define EXIF_SELF_TIMER_MODE 0x882b
  156. #define EXIF_EXIF_VERSION 0x9000
  157. #define EXIF_DATE_TIME_ORIGINAL 0x9003
  158. #define EXIF_DATE_TIME_DIGITIZED 0x9004
  159. #define EXIF_COMPONENT_CONFIGURATION 0x9101
  160. #define EXIF_COMPRESSED_BPP 0x9102
  161. #define EXIF_SHUTTER_SPEED_VALUE 0x9201
  162. #define EXIF_APERTURE_VALUE 0x9202
  163. #define EXIF_BRIGHTNESS_VALUE 0x9203
  164. #define EXIF_EXPOSURE_BIAS_VALUE 0x9204
  165. #define EXIF_MAX_APERTURE_VALUE 0x9205
  166. #define EXIF_SUBJECT_DISTANCE 0x9206
  167. #define EXIF_METERING_MODE 0x9207
  168. #define EXIF_LIGHT_SOURCE 0x9208
  169. #define EXIF_FLASH 0x9209
  170. #define EXIF_FOCAL_LENGTH 0x920a
  171. #define EXIF_SPATIAL_FREQ_RESPONSE 0x920c
  172. #define EXIF_NOISE 0x920d
  173. #define EXIF_IMAGE_NUMBER 0x9211
  174. #define EXIF_SECURITY_CLASSIFICATION 0x9212
  175. #define EXIF_IMAGE_HISTORY 0x9213
  176. #define EXIF_SUBJECT_LOCATION 0x9214
  177. #define EXIF_EXPOSURE_INDEX 0x9215
  178. #define EXIF_TIFF_EP_STANDARD_ID 0x9216
  179. #define EXIF_MAKER_NOTE 0x927c
  180. #define EXIF_USER_COMMENT 0x9286
  181. #define EXIF_SUBSEC_TIME 0x9290
  182. #define EXIF_SUBSEC_TIME_ORIGINAL 0x9291
  183. #define EXIF_SUBSEC_TIME_DIGITIZED 0x9292
  184. #define EXIF_FLASHPIX_VERSION 0xa000
  185. #define EXIF_COLOR_SPACE 0xa001
  186. #define EXIF_EXIF_IMAGE_WIDTH 0xa002
  187. #define EXIF_EXIF_IMAGE_HEIGHT 0xa003
  188. #define EXIF_RELATED_SOUND_FILE 0xa004
  189. #define EXIF_INTEROP_OFFSET 0xa005
  190. #define EXIF_FLASH_ENERGY 0xa20b
  191. #define EXIF_FOCAL_PLANE_X_RES 0xa20e
  192. #define EXIF_FOCAL_PLANE_Y_RES 0xa20f
  193. #define EXIF_FOCAL_PLANE_RES_UNIT 0xa210
  194. #define EXIF_SENSING_METHOD 0xa217
  195. #define EXIF_FILE_SOURCE 0xa300
  196. #define EXIF_SCENE_TYPE 0xa301
  197. #define EXIF_CFA_PATTERN 0xa302
  198.  
  199. /* Interoperability tags */
  200. #define EXIF_INTEROP_INDEX 0x0001
  201. #define EXIF_INTEROP_VERSION 0x0002
  202. #define EXIF_RELATED_IMAGE_FORMAT 0x1000
  203. #define EXIF_RELATED_IMAGE_WIDTH 0x1001
  204. #define EXIF_RELATED_IMAGE_HEIGHT 0x1002
  205.  
  206. /* Olympus exif tags (stored in TAG_MAKERNOTE) */
  207. #define EXIF_OLYMP_SPECIAL_MODE 0x0200
  208. #define EXIF_OLYMP_JPEG_QUALITY 0x0201
  209. #define EXIF_OLYMP_MACRO 0x0202
  210. #define EXIF_OLYMP_DIGI_ZOOM 0x0204
  211. #define EXIF_OLYMP_SOFTWARE_RELEASE 0x0207
  212. #define EXIF_OLYMP_PICT_INFO 0x0208
  213. #define EXIF_OLYMP_CAMERA_ID 0x0209
  214. #define EXIF_OLYMP_DATA_DUMP 0x0f00
  215.  
  216. /* Casio exif tags (stored in TAG_MAKERNOTE) */
  217. #define EXIF_CASIO_RECORDING_MODE 0x0001
  218. #define EXIF_CASIO_QUALITY 0x0002
  219. #define EXIF_CASIO_FOCUSING_MODE 0x0003
  220. #define EXIF_CASIO_FLASH_MODE 0x0004
  221. #define EXIF_CASIO_FLASH_INTENSITY 0x0005
  222. #define EXIF_CASIO_OBJECT_DISTANCE 0x0006
  223. #define EXIF_CASIO_WHITE_BALANCE 0x0007
  224. #define EXIF_CASIO_DIGITAL_ZOOM 0x000a
  225. #define EXIF_CASIO_SHARPNESS 0x000b
  226. #define EXIF_CASIO_CONTRAST 0x000c
  227. #define EXIF_CASIO_SATURATION 0x000d
  228. #define EXIF_CASIO_CCD_SENSITIVITY 0x0014
  229.  
  230. /* Additional extracted infromation from the jpeg stream - not Exif */
  231. #define EXIF_JPEG_DATA_LENGTH 0x0100
  232. #define EXIF_JPEG_THUMBNAIL_BYTE_SIZE 0x0101
  233. #define EXIF_JPEG_CCD_WIDTH 0x0102
  234. #define EXIF_JPEG_FILM_35MM_EQUIV 0x0103
  235. #define EXIF_JPEG_DATA_PRECISION 0x0104
  236. #define EXIF_JPEG_NUM_COMPONENTS 0x0105
  237. #define EXIF_JPEG_WIDTH 0x0106
  238. #define EXIF_JPEG_HEIGHT 0x0107
  239. #define EXIF_JPEG_COLOR 0x0108
  240. #define EXIF_JPEG_PROCESS 0x0109
  241. #define EXIF_JPEG_COMMENT 0x010a
  242.  
  243. /* Nikon exif tags (stored in TAG_MAKERNOTE) - NOT IMPLEMENTED */
  244. #define EXIF_NIKON_QUALITY 0x0003
  245. #define EXIF_NIKON_COLOR_MODE 0x0004
  246. #define EXIF_NIKON_IMAGE_ADJUSTMENT 0x0005
  247. #define EXIF_NIKON_CCD_SENSITIVITY 0x0006
  248. #define EXIF_NIKON_WHITE_BALANCE 0x0007
  249. #define EXIF_NIKON_FOCUS 0x0008
  250. #define EXIF_NIKON_DIGITAL_ZOOM 0x000a
  251. #define EXIF_NIKON_CONVERTER 0x000b
  252.